# 作业：
# 整理字符串、列表、字典、元组、集合可变和不可变的数据结构，背
#
# 1、定义两个字典，键值任意，把两个字典合并在一起，组成一个新字典

"""
dict1 = {"姓名":"杨晓男"}
dict2 = {"年龄":25}
dict1.update(dict2)
print(dict1)
"""

# 2、定义两个列表，将两个列表合并

import random

"""
list1 = [12,33,55,66]
list2 = ["科比","罗斯","詹姆斯"]
list1.extend(list2)
print(list1)
"""
# 3、定义一个集合，包含2，3，4，5，7元素，判断元素12在不在集合中，用分支语句打印不同结果； 判断元素3在不在集合中，打印结果
"""
x = {2,3,4,5,7}
print(x)
element_to_check = 12

if element_to_check in x:
    print(f"{element_to_check} 在集合中")
else:
    print(f"{element_to_check} 不在集合中")

element_to_check = 3

if element_to_check in x:
    print(f"{element_to_check} 在集合中")
else:
    print(f"{element_to_check} 不在集合中")
"""
# 4、让用户输入账号密码，去除账号密码前后无用的空格，然后判断账号是不是admin，密码是不是123456，如果都相同显示登录成功，否则显示登录失败
"""
username = input("请输入账号:").strip()
password = input("请输入密码:").strip()

if username ==  "admin" and password == "123456":
    print("登录成功")
else:
    print("登陆失败")
"""
# 5、实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
"""
for i in range(3):
    user = input("请您输入账号").strip()
    pwd = input("请您输入密码").strip()
    if (user == "seven" or user == "alex")  and pwd == "123":
        print("登录成功")
        break
    elif i < 2:
        print("登录失败")
        print(f"您还有{3-1-i}次机会")
    else:
        print("登录失败")
        print("您没有机会了")
"""
# 6、用程序计算100以内有多少个3的整数倍数字
"""
count = 0
for i in range(1,101):
    if i%3 == 0:
        count+=1
print(f"有{count}个")
"""
# 7、实现判断用户输入的内容中是否有c,要求最多输入三次
"""
for i in range(3):
    result = input("请输入")
    if ("c" or "C") in result:
        print("c在里面")
        break # 如果有一次输入的字符串包含c，跳出循环
    else:
        print("c不在里面")
"""
# 8、让用户输入个人基本信息，包括 姓名、电话、住址、年龄，通过字典保存用户的数据信息，当用户输入q的时候，结束输入
# 结束输入后，打印显示全部的用户名，并要求选择一个名称
# 然后打印输出这个用户的全部信息，输出信息的格式：用户 xxx，电话是xxx，地址是xxx，年龄是xxx
"""
dict1 = {}
while True:
    name = input("请输入姓名")
    if name == "q":
        print(dict1)
        result = input("请输入用户名称")
        print(dict1[result])
        break
    phone = input("请输入电话")
    if phone == "q":
        print(dict1)
        result = input("请输入用户名称")
        print(dict1[result])
        break
    address = input("请输入住址")
    if address == "q":
        print(dict1)
        result = input("请输入用户名称")
        print(dict1[result])
        break
    age = input("请输入年龄")
    if age == "q":
        print(dict1)
        result = input("请输入用户名称")
        print(dict1[result])
        break
    dict1.update({name:{"电话":phone,"住址":address,"年龄":age}})
"""
# 9、图书管理系统
# 支持选项，选择功能
# 图书管理系统：
# 1.添加图书
# 2.删除图书
# 3.修改图书
# 4.查询图书
# 5.显示所有图书
# 6.退出操作
"""
dict2 = {}
while True:
    print("==========欢迎来到图书管理系统==========")
    print("=============1.添加图书===============")
    print("=============2.删除图书===============")
    print("=============3.修改图书===============")
    print("=============4.查询图书===============")
    print("=============5.显示所有图书===========")
    print("=============6.退出操作==============")
    result = input("请输入您要选择序号")
    if result == "1":
        book_name = input("请输入您要添加的图书名字")
        name = input("请输入图书作者")
        create_time = input("请输入图书创建时间")
        if book_name not in dict2 :#  如果添加的图书不在图书系统里，加进去
            dict2.update({book_name:{"作者":name,"创建时间":create_time}})
            print(f"您要添加的{book_name}成功！")
        else:
            print(f"您要添加的{book_name}已经存在了！")
            print("本次添加失败！")
    elif result == "2":
        book_name = input("请输入您要删除的图书名字")
        if book_name in dict2:
            del dict2[book_name]
            print(f"您要删除的{book_name}成功！")
        else:
            print(f"您要删除的{book_name}不存在！")
            print("本次删除失败！")
    elif result == "3":
        book_old_name = input("请输入您要修改的图书名字")
        if book_old_name not in dict2:
            print(f"您要修改的{book_old_name}不存在！")
            print("本次修改失败！")
        else:
            book_new_name = input("请输入新的图书名字")
            name = input("请输入图书作者")
            create_time = input("请输入图书创建时间")
            if book_new_name not in dict2:
                del dict2[book_old_name]
                dict2.update({book_new_name:{"作者":name,"创建时间":create_time}})
            else:
                print(f"您要修改的{book_new_name}已存在！")
                print("本次修改失败！")
    elif result == "4":
        book_name = input("请输入您要查询的图书名字")
        if book_name not in dict2:
            print(f"您要查询的{book_name}不存在！")
        else:
            print(f"您要查询的{book_name}，作者为：{dict2[book_name]['作者']}，他的创建时间是{dict2[book_name]['创建时间']}")
            # {“中华字典”:{"作者":"王长帅","创建时间":"2023年11月15日"}}    dict2["中华字典"]['创建时间']
    elif result == "5":
        for key,value in dict2.items():
            print(f"图书：{key}，作者为：{value['作者']}，创建时间为：{value['创建时间']}")
    elif result == "6":
        print("欢迎您下次再来图书管理系统！")
        print("退出图书管理系统")
        break
    else:
        print("您选择序号有误！请您重新选择！")
"""
# 10、预设一个 0~9 之间的整数，让用户猜一猜并输入所猜的数，如果大于预设的数，显示“太大” ；
# 小于预设的数，显示“太小” ，如此循环，直至猜中该数，显示“恭喜！你猜中了！ ”（使用random模块）
"""
ran_num = random.randint(0,9) # 随机数
while True:
    num = int(input("请输入要猜的数字"))
    if num == ran_num:
        print("恭喜！你猜中了！")
        break
    elif num < ran_num:
        print("输入的数太小！")
    elif num > ran_num:
        print("输入的数太大！")
"""
# 11、用户分别从键盘输入4个整数和3个整数组成两个列表list1和list2，
# 将列表list2合并到list1中，并在list1末尾再添加两个数字90和100，然后对list1降序排列，最后输出最终的列表list1
"""
list1 = input("请输入四个整数，用逗号隔开").split(',')
list2 = input("请输入三个整数，用逗号隔开").split(',')
list1 = [int(i) for i in list1]
list2 = [int(i) for i in list2]
list1.extend(list2)
list1.append(90)
list1.append(100)
list1.sort(reverse=True)
print(list1)
"""
"""
list1 = [55,99,33,22]
list1.sort() # [22, 33, 55, 99]
print(list1)
list1.sort(reverse=True) # [99, 55, 33, 22]
print(list1)
"""
# 12、最后一个单词的长度
# 给你一个字符串 s，由若干单词组成，单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
# 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串
"""
str1 = "hello world"
print(str1.split(" "))
print(str1.split(" ")[-1])
print(len(str1.split(" ")[-1]))
"""
# 13、编写一个程序，要求用户输入一个字符串，并将其反转输出。
"""
result = input("请输入字符串")[::-1]
print(result)
"""
# 14、编写一个程序，要求用户输入一个整数，判断它是奇数还是偶数，并输出结果
"""
num = int(input("请输入数字"))
if num%2 == 0:
    print("是偶数")
else:
    print("是奇数")
"""
# 15、编写一个程序，计算并输出 1 到 100 之间所有能被 7 整除但不能被 5 整除的数的和
"""
sum = 0 #和
for i in range(1,101):
    if i%7 == 0 and i%5 !=0:
        sum+=i
print(f"1 到 100 之间所有能被 7 整除但不能被 5 整除的数的和{sum}")
"""
# 16、输入任意三个数，用if语句编写求出其中最小值的程序
"""
one = int(input("请输入第1个数"))
two = int(input("请输入第2个数"))
three = int(input("请输入第3个数"))
min = one # 赋值一个最小数
if min > two:
    min = two
if min > three:
    min = three
print(f"最小值是{min}")
"""
# 17、两数之和
# 给定一个整数数组 nums和一个整数目标值 target，请你在该数组中找出 和为目标值 target 的那两个整数，并返回它们的数组下标。
# 你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。
# 你可以按任意顺序返回答案。
"""
nums = [55,99,77,88,11,22]
target = 33 # 11+22    对应下标是5和4
for i in range(len(nums)):
    for j in range(i):
        if nums[i] + nums[j] == target:
            print(f"两个数组的下标分别是：{j}，{i}")
"""

# 18、listinfo = [133, 88, 24, 33, 232, 44, 11, 44]，取出列表小于100，且为偶数的数
"""
listinfo = [133, 88, 24, 33, 232, 44, 11, 44]
for i in listinfo:
    if i % 2==0 and i < 100:
        print(f"小于100，且为偶数的数：{i}")
"""
# 19、从键盘上输入任意一个整数，输出这个整数是几位数
"""
num = input("输入数")
print(len(num))
"""
# 20、定义一个字典包含“name”、“age”两个key，对应的值为“韩梅梅”, 33，
#  将“name”对应的value值改为“韩涛”
# 添加新的键“sex”，值为“男”
#  将“age”键值对删除
"""
dict3 = {"name":"韩梅梅","age":33}
dict3['name'] = "韩涛"
dict3['sex'] = "男"
del dict3['age']
"""
# 21、编写程序，定义一个列表，通过索引打印出列表中第2个值，删除列表中的第3值
"""
list3 = [12,33,55,77,88]
"""
# 1. 通过索引打印出列表中第2个值
"""
print(list3[1])
"""
# 2. 删除列表中的第3值
"""
del list3[2]
"""